package agentzia;

import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.util.Observable;
import java.util.Observer;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class ErreserbaBistarenLaburpena extends JPanel implements Observer {
    // Kontrolak
    private JLabel etiketaData = new JLabel("Erreserbaren data  ");
    private JLabel etiketaAgentearenIzena = new JLabel("Erreserbaren agentea ");
    private JLabel etiketaErreserbaZenbakia = new JLabel(
            "Erreserbaren zenbakia");
    private JLabel etiketaGuztira = new JLabel("Guztira         ");
    private JTextField testuEremuaData = new JTextField();
    private JTextField testuEremuaAgentearenIzena = new JTextField();
    private JTextField testuEremuaErreserbarenZenbakia = new JTextField();
    private JTextField testuEremuaGuztira = new JTextField();

    public ErreserbaBistarenLaburpena(ErreserbaSistema erreserbaSistema) {
        erreserbaSistema.addObserver(this);

        setLayout(new GridLayout(2, 4, 25, 25));
        setFont(new Font("Arial", Font.PLAIN, 12));
        setBackground(Color.lightGray);
        setBorder(BorderFactory.createEmptyBorder(25, 25, 25, 25));
        // row 1
        add(etiketaData);
        add(testuEremuaData);
        add(etiketaAgentearenIzena);
        add(testuEremuaAgentearenIzena);
        // row 2
        add(etiketaErreserbaZenbakia);
        add(testuEremuaErreserbarenZenbakia);
        add(etiketaGuztira);
        add(testuEremuaGuztira);
        // testu eremuak irakurtzeko bakarrik aldatu
        testuEremuaData.setEditable(false);
        testuEremuaAgentearenIzena.setEditable(false);
        testuEremuaErreserbarenZenbakia.setEditable(false);
        testuEremuaGuztira.setEditable(false);
    }

    /**
     * Eguneratu Bista
     * 
     * @param observable
     *            java.util.Observable
     * @param objektua
     *            java.lang.Object
     */
    public void update(Observable observable, Object objektua) {
        NumberFormat numberFormat = NumberFormat.getCurrencyInstance();
        DateFormat dataFormat = DateFormat.getDateInstance();
        ErreserbaSistema erreserbaSistema = (ErreserbaSistema) observable;
        if (erreserbaSistema.getLoturaErreserba() != null) {
            // ezarri uneko erreserbaren datuak
            testuEremuaData.setText(dataFormat.format(erreserbaSistema
                    .getLoturaErreserba().getData()));
            testuEremuaErreserbarenZenbakia.setText(String
                    .valueOf(erreserbaSistema.getLoturaErreserba()
                            .getErreserbaZenbakia()));
            testuEremuaAgentearenIzena.setText(erreserbaSistema
                    .getLoturaErreserba().getAgentearenKodea());
            // TODO: prezioa x pertsona kopurua jarri
            float prezioa = (float)erreserbaSistema.getLoturaErreserba().getPertsonaKop()
                    * erreserbaSistema.getLoturaErreserba().getPrezioa();
            testuEremuaGuztira.setText(numberFormat.format(prezioa));
        } else {
            // berrezarri testua
            testuEremuaData.setText("");
            testuEremuaGuztira.setText("");
            testuEremuaAgentearenIzena.setText("");
            testuEremuaErreserbarenZenbakia.setText("");
        }
    }
}
